﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace AGPR.Locadora.Desktop
{
    public partial class FPrincipal : Form
    {
        public static Session sessao = Session.Instancia;

        #region Events

        public FPrincipal()
        {
            InitializeComponent();
            this.InicializaJanela("Logotipo");
        }

        private void sairToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            ConfirmaSaida(e);
        }

        private void trocarUsuárioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ConfirmaLogOff(e);
        }

        private void Principal_FormClosing(object sender, FormClosingEventArgs e)
        {
            ConfirmaSaida(e);
        }

        private void Principal_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

        private void Principal_Activated(object sender, EventArgs e)
        {
            ConfiguraNomeUsuario();
        }

        private void produtoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            InicializaJanela("Produto");
        }

        private void clienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            InicializaJanela("Cliente");
        }

        private void funcionarioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            InicializaJanela("Funcionario");
        }

        private void locacaoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            InicializaJanela("Locacao");
        }

        #endregion

        #region Methods

        #region ConfirmaSaida

        /// <summary>
        /// Confirma a saída do programa
        /// </summary>
        private void ConfirmaSaida(EventArgs e)
        {
            DialogResult opcaoSelecionada;

            opcaoSelecionada = MessageBox.Show("Deseja sair do sistema?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (opcaoSelecionada.Equals(DialogResult.Yes))
            {
                Application.Exit();
            }
        }

        #endregion

        #region ConfirmaLogoff

        /// <summary>
        /// Confirma a saída do programa
        /// </summary>
        private void ConfirmaLogOff(EventArgs e)
        {
            DialogResult opcaoSelecionada;

            opcaoSelecionada = MessageBox.Show("Deseja efetuar o Logoff?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (opcaoSelecionada.Equals(DialogResult.Yes))
            {
                Login login = new Login();
                login.Visible = true;
                this.Dispose();
            }
        }

        #endregion

        #region ConfiguraNomeUsuario

        /// <summary>
        /// Configura o nome do usuário conectado no rodapé
        /// </summary>
        private void ConfiguraNomeUsuario()
        {
            if (sessao.get("funcionario") != null)
            {
                statusLabelUsuario.Text = "Usuário conectado: " + sessao.get("funcionario").nome;
            }
        }

        #endregion

        #region InicializaJanela

        /// <summary>
        /// Inicializa a janela de acordo com o nome da classe
        /// </summary>
        private void InicializaJanela(string classe)
        {
            dynamic formulario;

            switch (classe)
            {
                case "Logotipo":
                    formulario = new FLogotipo();
                    break;
                case "Cliente":
                    formulario = new FCadastrarCliente();
                    break;
                case "ConsultarClientes":
                    formulario = new FConsultarClientes();
                    break;
                case "Produto":
                    formulario = new FProduto();
                    break;
                case "Funcionario":
                    formulario = new FFuncionario();
                    break;
                default:
                case "Locacao":
                    formulario = new FLocacao();
                    break;
            }

            formulario.MdiParent = this;
            formulario.Show();
        }

        #endregion

        private void toolStripConsultarProduto_Click(object sender, EventArgs e)
        {
            this.InicializaJanela("ConsultarProdutos");
        }

        #endregion

        private void toolStripConsultarCliente_Click(object sender, EventArgs e)
        {
            this.InicializaJanela("ConsultarClientes");
        }

    }
}
